\chapter{Podstawowe narzędzia pracy}
%\chapterWithAuthor{Wykorzystane narzędzia}{Paweł Barszcz}
\label{chap:wykorzystaneNarzedzia}

Istotną kwestią podczas pracy zespołowej nad projektem informatycznym jest wybór właściwych narzędzi. Pod uwagę brane są takie kryteria jak dojrzałość i~skuteczność narzędzia, wiedza wymagana do jego obsługi, bezpieczeństwo pracy oraz ogólne uznanie w~środowisku informatycznym (będące swoistym dowodem na przydatność narzędzia).

Na pierwszym etapie projektu nacisk położony został na zespołowe tworzenie dokumentu tekstowego (wzbogaconego o~rysunki), którym jest niniejsza dokumentacja. Oznaczało to konieczność wyboru narzędzia do tworzenia dokumentów oraz wprowadzenia dostępnego przez Internet repozytorium plików. Należało wybrać takie narzędzia, które pozwolą na pracę zarówno osobom korzystającym z~systemu Windows, jak i~członkom zespołu pracujących pod systemem Linux.

Wskazane zostały narzędzia obowiązkowe oraz dodatkowe, sugerowane jako wsparcie dla narzędzi obowiązkowych. Przygotowane zostały instrukcje konfiguracji wszystkich tych narzędzi w~środowisku systemu Windows.

\section{Repozytorium plików}

Już od początku prowadzenia ustaleń członkowie zespołu jednomyślnie uznali, że konieczne będzie wykorzystanie repozytorium opartego na systemie kontroli wersji. W~wyniku dalszych rozmów określono, że wykorzystany zostanie Mercurial\footnote{http://mercurial.selenic.com/}. Z~pośród popularnych rozwiązań rozpatrywane były także systemy Git oraz SVN. Główne cechy, które spowodowały wybór narzędzia Mercurial, to:
\begin{itemize}
	\item obecność lokalnych repozytoriów, pozwalających na tymczasowe wersjonowanie plików bez udostępniania zmian innym członkom zespołu,
	\item możliwość spokojnego rozważania rozwiązania problemu na lokalnym repozytorium (w~razie pojawienia się nietypowych problemów) i~wysłanie na serwer już naprawionego repozytorium,
	\item konieczność częstszego łączenia różnych wersji plików, niż w~przypadku SVN, co skutkuje ,,oswojeniem się'' członków zespołu z~funkcjonalnościami, których uniknąć się ostatecznie i~tak nie da,
	\item dostępność wersji dla różnych systemów operacyjnych,
	\item brak konieczności płacenia za korzystanie z~rozwiązania.
\end{itemize}
Atutem wybranego narzędzia okazało się również doświadczenie części zespołu w~korzystaniu z~niego.

Na {\it hosting} dla repozytorium wybrano darmową usługę Google Code\footnote{http://code.google.com}, w~ramach której możliwe jest prowadzenie projektów w~wieloosobowych zespołach.

Użytkownikom systemu Windows zaproponowano korzystanie z~{\it GUI} TortoiseHg Workbench dostarczonego w~pakiecie TortoiseHg. Narzędzie to posiada liczne błędy w~polskim tłumaczeniu (sugerowane jest korzystanie z~angielskiej wersji językowej) oraz kilka kwestii rozwiązanych w~sposób nieintuicyjny. Jednakże niedopracowanie {\it GUI} nie przeszkadza dostrzec potencjału, jaki drzemie w~tej znacznie ułatwiającej pracę aplikacji. Pozwala ona szybko zorientować się aktualnym stanie lokalnego repozytorium systemu kontroli wersji Mercurial i~za pomocą kilku kliknięć wywołać wszelkie istotne funkcje.

\subsection{Ochrona przed utratą danych}
Do istotnych kwestii należy zabezpieczenie się przed zagrożeniem utraty danych. W~pierwszym etapie projektu środki bezpieczeństwa nie muszą być jeszcze szczególnie wyrafinowane, ponieważ nie jest jeszcze konieczne utrzymywanie żadnego działającego systemu, który powinien być dostępny w~każdym momencie w~Internecie.

Można wyróżnić następujące kwestie wpływające na bezpieczeństwo projektu:
\begin{enumerate}
	\item Sam fakt skorzystania z~rozproszonego systemu kontroli wersji (jakim jest Mercurial) oznacza, że w~razie awarii głównego serwera z~repozytorium, każdy członek zespołu będzie posiadał w~miarę aktualną lokalną kopię wraz ze wszystkimi informacjami na temat wersjonowania plików. Tak zachowanie lokalne repozytorium można następnie ponownie umieścić na zdalnym serwerze.
	\item Google Code jako część systemu usług firmy Google uznać za rozwiązanie sprawdzone, względnie bezpieczne i~odporne na proste ataki czy awarie.
	\item Codziennie wykonywany jest automatycznie {\it backup} repozytorium na serwerze w~Polsce, pracującym pod systemem Gentoo Linux, opartym na macierzy RAID 1, zamkniętym w~szafie {\it rack} pod kontrolą systemu alarmowego. Zasilanie serwera jest podtrzymywane przez baterie.
	\item Co tydzień wykonywany jest ręcznie {\it backup} repozytorium na dysku przenośnym umiejscowionym w~domu jednego z~członków zespołu.
\end{enumerate}

\section{Edycja dokumentacji}
Jako obligatoryjne narzędzie do edycji dokumentacji wybrano system składu tekstu \LaTeX\footnote{\burl{http://en.wikipedia.org/wiki/LaTeX}}. Główne zalety wybranego narzędzia to:
\begin{itemize}
	\item możliwość utworzenia dokumentu złożonego z~wielu plików, odpowiadających np.~tworzonym przez różne osoby rozdziałom,
	\item wsparcie społeczności internetowej oparte na latach doświadczeń,
	\item powszechne uznanie narzędzia jako bardzo dobre,
	\item bogata biblioteka pakietów rozszerzających możliwości narzędzia,
	\item dobra ,,współpraca'' z~systemami kontroli wersji ze względu na tekstową naturę plików (przykładowo dokument utworzony w~programie MS Word nie umożliwiałby łączenia zestawów zmian w~pliku z~powodu jego binarnego formatu),
	\item dostępność wersji dla różnych systemów operacyjnych,
	\item brak konieczności płacenia za korzystanie z~rozwiązania.
\end{itemize}

Sugerowanym narzędziem pomocniczym został Texmaker\footnote{\burl{http://www.xm1math.net/texmaker/}}. Do jego zalet należą:
\begin{itemize}
	\item dynamiczny rozwój aplikacji, wprowadzane na bieżące liczne udogodnienia,
	\item przyjazny użytkownikowi i~nieskomplikowany interfejs,
	\item dostępność wersji dla różnych systemów operacyjnych,
	\item brak konieczności płacenia za korzystanie z~rozwiązania.
\end{itemize}

